/**
 * [更新缓存]JS
 * @returns {*}
 */
var app = function () {

    return new Vue({
        el: '#vueContainer',
        data: {
            loadOver: false,
            apiList: {}, // 连接列表
            messageList: {} // 提醒文本
        },
        created: function () {

            // 或取出缓存[API]列表
            this.apiList = $w.getApiUrl('clearCache');
            // 或取出缓存[API]列表 - 值
            this.apiList = $w.array_values(this.apiList);

            // 获取参数 - 已检测是否是清除规定缓存
            var cacheUrl = $w.getParams('cacheUrl');
            if (cacheUrl) {
                this.customApiList(cacheUrl);
            }
            // 获取下列表
            this.clearCache(1, 1);
            var that = this;
            this.$nextTick(function () {
                that.loadOver = true;
            });
        },
        methods: {
            /**
             * 获取下列表
             */
            clearCache: function ($key, $page) {

                this.$set(this.messageList, 'updating', {
                    title: '刷新中...',
                    timestamp: $w.formatDate(new Date(), 'Y-m-d H:i:s'),
                    type: "loading",
                });

                // 转为整型
                $key = parseInt($key);
                // 长度超过返回下
                if (this.apiList.length < $key) {
                    // 首先删除掉正在加载条目
                    this.$delete(this.messageList, 'updating');
                    // 添加下完毕时间线
                    this.addEndTimeLine();
                    return false;
                }

                $page = parseInt($page);
                // 连接
                var url = this.apiList[$key - 1];

                // var loadingInstance = ELEMENT.Loading.service({
                //     fullscreen: false,
                //     text: '清理中...'
                // });
                var that = this;

                // 获取各模块的值
                $.ajax({
                    url: url,
                    type: 'get',
                    data: {page: $page},
                    dataType: "json",
                    success: function (event) {

                        // 首先删除掉正在加载条目
                        that.$delete(that.messageList, 'updating');
                        that.$nextTick(function () {

                            // 隐藏正在加载
                            // loadingInstance.close();
                            that.$refs['scroll'].wrap.scrollTop =
                                that.$refs['scroll']['$el']['clientHeight'];
                        });

                        // 必须先登录
                        if (parseInt(event.no) === 403) {

                            that.$message({
                                type: 'warning',
                                showClose: true,
                                message: '登陆超时，请重新登陆'
                            });

                            // 几秒之后移除
                            return setTimeout(function () {
                                window.parent.location.href = $w.getPageUrl('login');
                            }, 810);
                        }

                        // 操作失败显示错误信息
                        if (parseInt(event.no) !== 200) {

                            // 失败文本
                            return that.$set(that.messageList, $key + '_' + $page, {
                                title: event.msg,
                                timestamp: $w.formatDate(new Date(), 'Y-m-d H:i:s'),
                                icon: "el-icon-error",
                                type: "danger",
                                color: "#ff0000"
                            });
                        }

                        // 成功文本
                        that.$set(that.messageList, $key + '_' + $page, {
                            title: event.msg,
                            timestamp: $w.formatDate(new Date(), 'Y-m-d H:i:s'),
                            icon: "el-icon-success",
                            type: "primary",
                            color: "#0bbd87"
                        });

                        // 下一页还有数据
                        if (event.data.nextPageHave === true) {
                            return that.clearCache($key, $page + 1);
                        }

                        // 检测是否全部连接加载完毕，没完毕继续加载
                        if (that.apiList.length > $key) {
                            return that.clearCache($key + 1, 1);
                        }

                        // 添加完毕时间线
                        that.addEndTimeLine();
                    },
                    error: function () {

                        // 首先删除掉正在加载条目
                        that.$delete(that.messageList, 'updating');
                        // 失败文本
                        return that.$set(that.messageList, 'error', {
                            title: '缓存清理失败...',
                            timestamp: $w.formatDate(new Date(), 'Y-m-d H:i:s'),
                            icon: "el-icon-error",
                            type: "danger",
                            color: "#ff0000"
                        });
                    }
                });
            },
            /**
             * 添加下完毕时间线
             */
            addEndTimeLine: function () {

                // 已经加载上了 返回
                if (this.messageList['end']) return true;
                // 最后全部加载完毕
                this.$set(this.messageList, 'end', {
                    title: '缓存刷新完毕',
                    timestamp: $w.formatDate(new Date(), 'Y-m-d H:i:s'),
                    icon: "el-icon-success",
                    type: "success",
                    color: "#0bbd87"
                });
            },
            /**
             * 传输的自定义缓存清除，规则化一下缓存请求连接
             * @param $cacheUrls
             */
            customApiList: function ($cacheUrls) {
                if (typeof $cacheUrls === 'string') {
                    $cacheUrls = [$cacheUrls];
                }
                console.log($cacheUrls);
                for (var i in $cacheUrls) {
                    if (!$cacheUrls.hasOwnProperty(i)) continue;
                    // 不在当前缓存合法列表中
                    if (!$w.in_array($cacheUrls[i], this.apiList)) {
                        // 姑且报个错提醒下
                        console.warn('连接【' + $cacheUrls[i] + '】不是合法更新缓存连接，请检查(如果确实有次连接，请到核心JS文件中：/js/common.js -> `_url[clearCache]`添加添加相关设置)。');
                        this.$delete($cacheUrls, i);
                    }
                }
                // 最终赋值合法列表
                this.apiList = $cacheUrls;
            }
        },
        watch: {
            /**
             * 监测文本过滤
             * @param $val
             */
            'searchForm.label': function ($val) {
                // this.$refs.tree.filter($val);
            }
        }
    });
};
